{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import math,sys,os,numpy as np\n",
    "from numpy.linalg import norm\n",
    "from PIL import Image\n",
    "from matplotlib import pyplot as plt, rcParams, rc\n",
    "from scipy.ndimage import imread\n",
    "from skimage.measure import block_reduce\n",
    "import cPickle as pickle\n",
    "from scipy.ndimage.filters import correlate, convolve\n",
    "from ipywidgets import interact, interactive, fixed\n",
    "from ipywidgets.widgets import *\n",
    "rc('animation', html='html5')\n",
    "rcParams['figure.figsize'] = 3, 6\n",
    "%precision 4\n",
    "np.set_printoptions(precision=4, linewidth=100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\"\"\"\n",
    "from tensorflow.examples.tutorials.mnist import input_data\n",
    "mnist = input_data.read_data_sets(\"MNIST_data/\")\n",
    "images, labels = mnist.train.images, mnist.train.labels\n",
    "images = images.reshape((55000,28,28))\n",
    "np.savez_compressed(\"MNIST_data/train\", images=images, labels=labels)\n",
    "\"\"\"\n",
    "1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def plots(ims, interp=False, titles=None):\n",
    "    ims=np.array(ims)\n",
    "    mn,mx=ims.min(),ims.max()\n",
    "    f = plt.figure(figsize=(12,24))\n",
    "    for i in range(len(ims)):\n",
    "        sp=f.add_subplot(1, len(ims), i+1)\n",
    "        if not titles is None: sp.set_title(titles[i], fontsize=18)\n",
    "        plt.imshow(ims[i], interpolation=None if interp else 'none', vmin=mn,vmax=mx)\n",
    "\n",
    "def plot(im, interp=False):\n",
    "    f = plt.figure(figsize=(3,6), frameon=True)\n",
    "    plt.imshow(im, interpolation=None if interp else 'none')\n",
    "\n",
    "plt.gray()\n",
    "plt.close()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(55000, 28, 28)"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = np.load(\"MNIST_data/train.npz\")\n",
    "images=data['images']\n",
    "labels=data['labels']\n",
    "n=len(images)\n",
    "images.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nxCf7gzWvTgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f70c9799c50>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot(images[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "7"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "labels[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n4y+99NJGx9K2hrceHXjggV49YMAArw7X7C5atMir+/fv79Uvvvhio+fo2rWrVxdbFzx8+PACHSMJ\n4frZULj/ZSjcz1mSxo8f79U/+lGyf4ldvny5V1977bWJjo84Rx11lFf36NHDq//85z979SOPPFLx\nnpBNO++8c7VbSBVe4QUAAECmMeEFAABApjHhBQAAQKZVfQ1vvQrXYRZTbM0gqmPkyJFefcYZZ3h1\n+H0Lv+/h7eF63abuE+6rO2nSJK+eP39+gY6RhAkTJnj1lClTvPqQQw7x6qefftqrhw0b1mjMNm38\n1x/K/X8+zNrkyZO9+q233iprfJTmmGOOKXj7Qw895NUt/VmRhGLnLaAW8QovAAAAMo0JLwAAADKN\nCS8AAAAyjTW8reTss8/26n333bdFj+/QoUOjY4MGDfJq1m7WvqbWys2ZM8erL774Yq/m+976dt11\nV68O1zy2beufWg8++OCiY7700kte/fDDD3t1z549vfq8884rOmZDf/vb31p0f1RGly5dCt6+evXq\nivew//77e/VZZ53l1bvssotXH3/88V792WefVaYxlKVdu3Ze3adPn4L3X7x4cQW7SR9e4QUAAECm\nFZ3wmtlUM1tuZm80ODbWzJaZ2fz8x5GVbRO1gKwgBjlBLLKCGOQEMWJe4Z0m6cdNHJ/onBuU/3g8\n4b5Qm8gKYpATxCIriEFOUFTRNbzOuRfMrHcTN2V2Y9jw/afDvVYl6fzzz2/RmOGaqGJ7bIa3b7fd\ndo3uM3v2bK/ecccdW9RT0uoxK/fee69X9+7t/+fvtNNOXj1gwACv3nbbbb26qVyMHTvWq2t9zW4W\ncnLnnXd69TfffNOix99///2Nji1dutSrN23a5NVXXHFFwTHD9d9z58716scee6wlLaZCFrLSuXNn\nrz700EMr+nxN/ax45ZVXvLpv375eHa79DN1www1effrpp5fYXWVkISdJCL/3Q4YMKXj/cA6RdeWs\n4R1tZq+Z2RQz65RYR8gisoIY5ASxyApikBP8S6kT3lsk9XPODZT0qaSJybWEjCErdWb9+vWlPIyc\nIBZZQQxyUofmzZvX7G0lTXidcyvdt38/myypZXtsoW6QlfrTvn37Fj+GnCAWWUEMclKfCi3jiN2H\n19RgLYyZ9XDOfZovfyrpzZK7q4LDDjvMqwcPHuzVo0aN8urdd9898R6KreGNMW3atAQ6SVymslLM\n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\nkTSg1D4LjFdyj2nOSVqzkvac1GNW0pgTspK+nKQ1K0nnpBJZSWtOKpWVNOakElmppXNKa7zCu5+k\n95xzS5xzGyTdL2lEmWOaynx12jn3gqTPgsMjJN2V//wuSUcnMKaU67fFnHOfOudey3++TtIiSb1K\n7bOZ8XqW02OCKpETKYVZSXtOCoyZ5aykLicFxpTISgzOKWV8/fn5wzklcryaOae0xoS3p6SlDepl\n+rbxUjlJT5jZK2Y2qsyxGurmnFsu5b7gkrolNO5oM3vNzKa09M8PW5hZH+V+K3tRUvdy+2ww3ktJ\n9VimSuREqq2spC4nwZhZzkot5UQiKzE4pyT09efnT0lqKSdSHZxTavWitaHOue9LGq7cf/wBFXqe\nJDYpvkVSP+fcQEmfSprY0gHMrKOk6ZIuyP+2E/bVoj6bGK/sHlOsVrKSupw0M2ZWs1IrOZHISrXV\nSlYS+frz86dktZITqU7OKa0x4f1I0m4N6l75YyVzzn2S/3elpBnK/TkiCcvNrLskmVkPSSvKHdA5\nt9LlF6JImixp35Y83szaKvcNv9s5N7PcPpsar9weE5J4TqTayUractLcmFnNSq3kRCIrLcA5pcyv\nPz9/SlcrOZHq55zSGhPeVyTtYWa9zaydpOMlzSp1MDPbNj/rl5ltJ+kISW+WOpz89SCzJJ2a//wU\nSTPDB7R0zPw3eoufquW93inpbefcTQ2OldNno/ES6DEJieZESn1W0p6TJsfMYlZSnpNGY5KVaJxT\nvlXq15+fPyVIeU4ajVk35xTXOldAHqncVXbvSbq8zLH6KncF5QJJC0sdT9K9kj6W9LWkDyWdJqmz\npNn5Xp+UtEMCY/5J0hv5nh9Wbl1L7HhDJW1q8N87P/+13LGUPguMV3KPac1JmrOS9pzUW1bSmhOy\nkq6cpDkrSeekEllJc06Szkpac1KJrNTSOcXygwMAAACZVKsXrQEAAABRmPACAAAg05jwAgAAINOY\n8AIAACDTmPACAAAg05jwAgAAINOY8AIAACDT/j+ULh5Mfbwf4QAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f707da67fd0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plots(images[:5], titles=labels[:5])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f707d721410>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "top=[[-1,-1,-1],\n",
    "     [ 1, 1, 1],\n",
    "     [ 0, 0, 0]]\n",
    "\n",
    "plot(top)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nxCf7gzWvTgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f707d705dd0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "r=(0,28)\n",
    "def zoomim(x1=0,x2=28,y1=0,y2=28):\n",
    "    plot(images[0,y1:y2,x1:x2])\n",
    "w=interactive(zoomim, x1=r,x2=r,y1=r,y2=r)\n",
    "w"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ],\n",
       "       [ 0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ],\n",
       "       [ 0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ],\n",
       "       [ 0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ],\n",
       "       [ 0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ],\n",
       "       [ 0.    ,  0.    ,  0.    ,  0.3529,  0.5412,  0.9216,  0.9216,  0.9216,  0.9216,  0.9216],\n",
       "       [ 0.    ,  0.    ,  0.549 ,  0.9843,  0.9961,  0.9961,  0.9961,  0.9961,  0.9961,  0.9961],\n",
       "       [ 0.    ,  0.    ,  0.8863,  0.9961,  0.8157,  0.7804,  0.7804,  0.7804,  0.7804,  0.5451],\n",
       "       [ 0.    ,  0.    ,  0.149 ,  0.3216,  0.051 ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ],\n",
       "       [ 0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ],\n",
       "       [ 0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ],\n",
       "       [ 0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ]], dtype=float32)"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "k=w.kwargs\n",
    "dims = np.index_exp[k['y1']:k['y2']:1,k['x1']:k['x2']]\n",
    "images[0][dims]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "corrtop = correlate(images[0], top)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ],\n",
       "       [ 0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ],\n",
       "       [ 0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ],\n",
       "       [ 0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ],\n",
       "       [ 0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ],\n",
       "       [ 0.    ,  0.    ,  0.3529,  0.8941,  1.8157,  2.3843,  2.7647,  2.7647,  2.7647,  2.7647],\n",
       "       [ 0.    ,  0.549 ,  1.1804,  1.6353,  1.1608,  0.6039,  0.2235,  0.2235,  0.2235,  0.2235],\n",
       "       [ 0.    ,  0.3373,  0.349 ,  0.1686, -0.3843, -0.6118, -0.6471, -0.6471, -0.8824, -1.4235],\n",
       "       [ 0.    , -0.7373, -1.4118, -2.1765, -2.2196, -2.3255, -2.3412, -2.3412, -2.1059, -1.5647],\n",
       "       [ 0.    , -0.149 , -0.4706, -0.5216, -0.3725, -0.051 ,  0.    ,  0.    ,  0.    ,  0.    ],\n",
       "       [ 0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ],\n",
       "       [ 0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ,  0.    ]], dtype=float32)"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "corrtop[dims]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f0aa7ba7a90>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot(corrtop[dims])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n8T87q+KmGathOwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f0aa7d041d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot(corrtop)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-1,  1,  0],\n",
       "       [-1,  1,  0],\n",
       "       [-1,  1,  0]])"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.rot90(top, 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n8T87q+KmGathOwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f0aa78bdc90>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "convtop = convolve(images[0], np.rot90(top,2))\n",
    "plot(convtop)\n",
    "np.allclose(convtop, corrtop)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f0aa7ba7250>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "straights=[np.rot90(top,i) for i in range(4)]\n",
    "plots(straights)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n1ka8AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f0aa7ec5f90>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "br=[[ 0, 0, 1],\n",
    "    [ 0, 1,-1.5],\n",
    "    [ 1,-1.5, 0]]\n",
    "\n",
    "diags = [np.rot90(br,i) for i in range(4)]\n",
    "plots(diags)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f0af8bbab50>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "rots = straights + diags\n",
    "corrs = [correlate(images[0], rot) for rot in rots]\n",
    "plots(corrs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f0aa733bd50>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def pool(im): return block_reduce(im, (7,7), np.max)\n",
    "\n",
    "plots([pool(im) for im in corrs])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "eights=[images[i] for i in xrange(n) if labels[i]==8]\n",
    "ones=[images[i] for i in xrange(n) if labels[i]==1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f0aa75e2b10>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f0aa7f8c2d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plots(eights[:5])\n",
    "plots(ones[:5])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "pool8 = [np.array([pool(correlate(im, rot)) for im in eights]) for rot in rots]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "len(pool8), pool8[0].shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nn0Cb2S/M7Lma27bk32saDG/0ikCSFrn7hZLulPTnZnZmml0IHLdG0rvd/TxJ/6Y/vYpplWdV/bnO\nl3SXpJ/UPmhmFVVfQX0xeZUWbIzahn3d/a1k3QJJFzX7D6W2zfGFgNqg5zZWViR9TdK/S7ojRVbS\nvPKcEFnJkhMpe1Zi5STZ9zJkZULkJKCWY8oYP0+ACZEVjimT65giFZuVk+GYUqvlE2h3v9zdz625\nnZP8u0ZSvyUfY1v1OxhfabKN49eE3qzqOUbnJ/cXqPqKptYeSQuTbU5V9apDL6r6RwdqVufuryUf\nm0jSP0n6QOCPuPd4v1H26QTuPnD8IwV3/7mkaTWvlNpUDdaD7v5omp5j1Y7WN1l3SNX/+K+oKz3h\neXX3A3Xbblgb+txGzMpeVf/o4ylVsxKUk+Tn2avWZCVTTpJ+0bOSNyfJ+kxZyZuTZOy4ZkUcU4L6\nJus4pkyCrHBMmVzHlGTfxyUr43lMqTXep3Cs0Z++a/EmSSc8kWZ2qpm1J3f/W9WPTl5P1n082Uat\nx5JtSdJ1qv615wZJ7zWzRc3qbPQvUTc1f4W4RtL/TraxTNLrnnzUM1rd8f8Yk+ULVf1KweO/6Ack\nPe/ud2boOWpto76SptgYXzKvxs9rkV9QnyYrGyR1S7pE1b/GDc2JlC8rWXMyam2LspI6J+5+IOT3\nrQbPbYE5kYrJCseUUfqKY0qsY4pUnqxwTJlcxxSpwKzoZDymeM6/Ts1zk3Saqm+Vv6jqV8Scmqz/\ngKT7kuU/l/Scqu8+b5X0/5LxOyV9LRnTK+mvk+UOSQ8nj69T9S15qfpqY7S6f5D026TPLyV1J+sf\nkrRP0pCkP0j6lKS/l/SZmp/jLlX/enarpAtC6iStqOn3tKSLkvUXq/pVOFuSxzYl+x7Sc8zaRn0l\nnZOM3ZI81/8nxfMaUtvwuW1xVv5b0stpc5I1K1lzMh5ZyZqTFL/vE57bonJSZFay5IRjCseUiZiV\nrDnhmFLOY8p4ZCVrTlp5TOFCKgAAAEAK430KBwAAAFAqTKABAACAFJhAAwAAACkwgQYAAABSYAIN\nAAAApMAEGgAAAEiBCTQAAACQwv8ABOJuMVtINjYAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f0aa7ea3550>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plots(pool8[0][0:5])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def normalize(arr): return (arr-arr.mean())/arr.std()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "filts8 = np.array([ims.mean(axis=0) for ims in pool8])\n",
    "filts8 = normalize(filts8)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f0aa754ba50>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plots(filts8)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "pool1 = [np.array([pool(correlate(im, rot)) for im in ones]) for rot in rots]\n",
    "filts1 = np.array([ims.mean(axis=0) for ims in pool1])\n",
    "filts1 = normalize(filts1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f0aa6ef2b50>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plots(filts1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def pool_corr(im): return np.array([pool(correlate(im, rot)) for rot in rots])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f0aa77da8d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plots(pool_corr(eights[0]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def sse(a,b): return ((a-b)**2).sum()\n",
    "def is8_n2(im): return 1 if sse(pool_corr(im),filts1) > sse(pool_corr(im),filts8) else 0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(126.77776, 181.26105)"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sse(pool_corr(eights[0]), filts8), sse(pool_corr(eights[0]), filts1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[5223, 287]"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "[np.array([is8_n2(im) for im in ims]).sum() for ims in [eights,ones]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[166, 5892]"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "[np.array([(1-is8_n2(im)) for im in ims]).sum() for ims in [eights,ones]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def n1(a,b): return (np.fabs(a-b)).sum()\n",
    "def is8_n1(im): return 1 if n1(pool_corr(im),filts1) > n1(pool_corr(im),filts8) else 0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "[np.array([is8_n1(im) for im in ims]).sum() for ims in [eights,ones]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "[np.array([(1-is8_n1(im)) for im in ims]).sum() for ims in [eights,ones]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.12"
  },
  "nav_menu": {},
  "toc": {
   "navigate_menu": true,
   "number_sections": true,
   "sideBar": true,
   "threshold": 6,
   "toc_cell": false,
   "toc_section_display": "block",
   "toc_window_display": false
  },
  "widgets": {
   "state": {
    "0468b419a96749ec9b4cb1abdd4626f7": {
     "views": []
    },
    "2d3eeb645fa442fcb882ae96a9387e3d": {
     "views": []
    },
    "32cface5fd2d422480c840a0dbb1852d": {
     "views": []
    },
    "3d7fbc924d804aa1b0b751d1c4d9d42a": {
     "views": []
    },
    "60b62dbd86494ef0bc136aef4657b05f": {
     "views": [
      {
       "cell_index": 8
      }
     ]
    },
    "879e65eadeba4a66bd0759b2918fa9f0": {
     "views": []
    },
    "8cd5af0fc89d43d4ae9b786c1f886bee": {
     "views": []
    },
    "c3a89a0403354dd19a296fd30376a143": {
     "views": []
    },
    "c997f4ebd8874aaea6ea7b699afc9a27": {
     "views": []
    },
    "ff487921e8134858a58437f0558fd42f": {
     "views": []
    }
   },
   "version": "1.1.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
